﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;

namespace QLTV
{
    public partial class frmQuanLyNhanVien : Form
    {
        public frmQuanLyNhanVien()
        {
            InitializeComponent();
        }

        private void frmQuanLyNhanVien_Load(object sender, EventArgs e)
        {
            grbThongTinNV.Enabled = false;
            btnThucHien.Enabled = false;
        }

        private void rdbTiepNhan_CheckedChanged(object sender, EventArgs e)
        {
            grbThongTinNV.Enabled = true;
            btnThucHien.Enabled = true;

            txtMaSoNV.ReadOnly = true;
            txtHoTen.ReadOnly = false;
            txtDiaChi.ReadOnly = false;
            txtDienThoai.ReadOnly = false;
            txtNam.ReadOnly = false;
            cmbNgay.Enabled = true;
            cmbThang.Enabled = true;
            cmbBangCap.Enabled = true;
            cmbBoPhan.Enabled = true;
            cmbChucVu.Enabled = true;
            cmbNgay.SelectedIndex = 0;
            cmbThang.SelectedIndex = 0;

            btnThucHien.Text = "Tiếp Nhận";

            KhoiTao();

            List<BangCapDTO> listBangCap = BangCapService.LayDanhSachBangCap();
            cmbBangCap.DataSource = listBangCap;
            cmbBangCap.DisplayMember = "TenLoaiBangCap";
            cmbBangCap.ValueMember = "MaLoaiBangCap";

            List<BoPhanDTO> listBoPhan = BoPhanService.LayDanhSachBoPhan();

            cmbBoPhan.DataSource = listBoPhan;
            cmbBoPhan.DisplayMember = "TenBoPhan";
            cmbBoPhan.ValueMember = "MaBoPhan";

            List<ChucVuDTO> listChucVu = ChucVuService.LayDanhSachChucVu();

            cmbChucVu.DataSource = listChucVu;
            cmbChucVu.DisplayMember = "TenChucVu";
            cmbChucVu.ValueMember = "MaChucVu";

            txtMaSoNV.Text = TaoMaSoNV();

        }

        private void rdbCapNhat_CheckedChanged(object sender, EventArgs e)
        {
            grbThongTinNV.Enabled = true;
            txtMaSoNV.ReadOnly = false;
            txtHoTen.ReadOnly = false;
            txtDiaChi.ReadOnly = false;
            txtDienThoai.ReadOnly = false;
            txtNam.ReadOnly = false;
            cmbNgay.Enabled = true;
            cmbThang.Enabled = true;
            cmbBangCap.Enabled = true;
            cmbBoPhan.Enabled = true;
            cmbChucVu.Enabled = true;
            btnThucHien.Text = "Cập Nhật";
            btnThucHien.Enabled = false;
            KhoiTao();

        }

        private void rdbXoa_CheckedChanged(object sender, EventArgs e)
        {
            grbThongTinNV.Enabled = true;
            txtMaSoNV.ReadOnly = false;
            txtHoTen.ReadOnly = true;
            txtDiaChi.ReadOnly = true;
            txtDienThoai.ReadOnly = true;
            txtNam.ReadOnly = true;
            cmbNgay.Enabled = false;
            cmbThang.Enabled = false;
            cmbBangCap.Enabled = false;
            cmbBoPhan.Enabled = false;
            cmbChucVu.Enabled = false;
            btnThucHien.Text = "Xóa";
            btnThucHien.Enabled = false;
            cmbBangCap.DataSource = null;
            cmbBoPhan.DataSource = null;
            cmbChucVu.DataSource = null;

            KhoiTao();
        }

        private void KhoiTao()
        {
            txtMaSoNV.Text = "";
            txtHoTen.Text = "";
            txtDiaChi.Text = "";
            txtDienThoai.Text = "";
            txtNam.Text = "";
            cmbNgay.SelectedIndex = 0;
            cmbThang.SelectedIndex = 0;
        }

        private void btnThucHien_Click(object sender, EventArgs e)
        {

            if (rdbTiepNhan.Checked == true)
            {
                if (KiemTra())
                {
                    NhanVienDTO nhanvienDTO = new NhanVienDTO();
                    nhanvienDTO.MaTheNV = txtMaSoNV.Text;
                    nhanvienDTO.HoTen = txtHoTen.Text;
                    nhanvienDTO.DiaChi = txtDiaChi.Text;
                    nhanvienDTO.DienThoai = txtDienThoai.Text;
                    nhanvienDTO.LoaiBangCap = Convert.ToInt32(cmbBangCap.SelectedValue);
                    nhanvienDTO.BoPhan = Convert.ToInt32(cmbBoPhan.SelectedValue);
                    nhanvienDTO.ChucVu = Convert.ToInt32(cmbChucVu.SelectedValue);
                    int ngay = Convert.ToInt32(cmbNgay.SelectedItem);
                    int thang = Convert.ToInt32(cmbThang.SelectedItem);
                    int nam = Convert.ToInt32(txtNam.Text);
                    nhanvienDTO.NgaySinh = new DateTime(nam, thang, ngay);

                    NhanVienService.ThemNhanVien(nhanvienDTO);
                    MessageBox.Show("Thành công");

                    KhoiTao();
                    cmbBangCap.SelectedIndex = 0;
                    cmbBoPhan.SelectedIndex = 0;
                    cmbChucVu.SelectedIndex = 0;
                    txtMaSoNV.Text = TaoMaSoNV();
                }
            }
            
            
        }

        private bool KiemTra()
        {
            if (rdbTiepNhan.Checked == true)
            {
                if (txtHoTen.Text.Trim() == "")
                {
                    MessageBox.Show("Chưa nhập họ tên", "Tiếp nhận nhân viên", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
                else if (txtDiaChi.Text.Trim() == "")
                {
                    MessageBox.Show("Chưa nhập địa chỉ", "Tiếp nhận nhân viên", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
                else if (cmbNgay.SelectedIndex == 0)
                {
                    MessageBox.Show("Chưa chọn ngày", "Tiếp nhận nhân viên", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
                else if (cmbThang.SelectedIndex == 0)
                {
                    MessageBox.Show("Chưa chọn ngày", "Tiếp nhận nhân viên", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }
                else if (txtNam.Text.Trim()=="")
                {
                    MessageBox.Show("Chưa nhập năm sinh", "Tiếp nhận nhân viên", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return false;
                }

                
            }
            return true;
        }

        private void btnNhapLai_Click(object sender, EventArgs e)
        {
            if (rdbTiepNhan.Checked == true)
            {
                KhoiTao();
                txtMaSoNV.Text = TaoMaSoNV();
            }
            if (rdbCapNhat.Checked == true)
                txtMaSoNV.Text = "";
            if (rdbXoa.Checked == true)
                txtMaSoNV.Text = "";

        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtMaSoNV_TextChanged(object sender, EventArgs e)
        {
            if (rdbCapNhat.Checked == true)
            {
                if (txtMaSoNV.Text != "")
                {
                    int maNV = NhanVienService.LayMaNVTheoMaSoNV(txtMaSoNV.Text);
                    if (NhanVienService.LayThongTinNhanVienTheoMaNV(maNV).MaTheNV == txtMaSoNV.Text)
                    {
                        NhanVienDTO nhanvien = NhanVienService.LayThongTinNhanVienTheoMaNV(maNV);
                        txtHoTen.Text = nhanvien.HoTen;
                        txtDiaChi.Text = nhanvien.DiaChi;
                        txtDienThoai.Text = nhanvien.DienThoai;
                        txtNam.Text = nhanvien.NgaySinh.Year.ToString();
                        cmbNgay.SelectedText = nhanvien.NgaySinh.Day.ToString();
                        cmbThang.SelectedText = nhanvien.NgaySinh.Month.ToString();
                        btnThucHien.Enabled = true;
                    }
                    else
                    {
                        txtHoTen.Text = "";
                        txtDiaChi.Text = "";
                        txtDienThoai.Text = "";
                        txtNam.Text = "";
                        cmbNgay.SelectedIndex = 0;
                        cmbThang.SelectedIndex = 0;

                        btnThucHien.Enabled = false;
                    }
                }
            }
        }

        private void txtMaSoNV_Leave(object sender, EventArgs e)
        {
            if (rdbCapNhat.Checked == true || rdbXoa.Checked==true)
            {
                NhanVienDTO nvDTO = NhanVienService.LayThongTinNhanVienTheoMaSoNV(txtMaSoNV.Text.Trim());
                if (txtMaSoNV.Text.Trim() != "")
                {
                    string maso = nvDTO.MaTheNV;
                    if (nvDTO.MaTheNV != txtMaSoNV.Text.Trim())
                    {
                        lblTonTai.Text = "Mã số nhân viên không tồn tại !!";
                    }
                }
            }
        }

        private string TaoMaSoNV()
        {
            BoPhanDTO bophan = BoPhanService.LayThongTinBoPhan(Convert.ToInt32(cmbBoPhan.SelectedValue));
            string masoNV = bophan.TenTat;
            int maNVMax = NhanVienService.LayMaNhanVienMax() + 1;
            string maso;
            if(maNVMax<10)
                maso="00" + maNVMax.ToString();
            else if(maNVMax<100)
                maso="0"+maNVMax.ToString();
            else 
                maso=maNVMax.ToString();
            masoNV += maso;
            return masoNV;
        }

        private void cmbBoPhan_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rdbTiepNhan.Checked == true)
            {
                if(txtMaSoNV.Text!="")
                    txtMaSoNV.Text = TaoMaSoNV();
            }
        }

        private void txtDienThoai_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;

            if (char.IsControl(e.KeyChar))
                e.Handled = false;
        }

        private void txtNam_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsNumber(e.KeyChar))
                e.Handled = true;

            if (char.IsControl(e.KeyChar))
                e.Handled = false;
        }


    }
}
